package com.cooksys.film_rental.bo.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.cooksys.film_rental.bo.StoreBo;
import com.cooksys.film_rental.dao.StoreDao;
import com.cooksys.film_rental.model.Address;
import com.cooksys.film_rental.model.Customer;
import com.cooksys.film_rental.model.Inventory;
import com.cooksys.film_rental.model.Staff;
import com.cooksys.film_rental.model.Store;

@Service("StoreBo")
public class StoreBoImpl implements StoreBo {

	@Autowired(required = true)
	StoreDao storeDao;

	@Override
	public Store getStoreByStoreId(Byte storeId) {
		return this.storeDao.getStoreByStoreId(storeId);
	}

	@Override
	public Store getStoreByStoreId(String storeId) {
		try {

			Byte storeIdAsByte = Byte.valueOf(storeId);
			return this.getStoreByStoreId(storeIdAsByte);

		} catch (NumberFormatException e) {

			System.err
					.println("Could not parse Byte value for storeId from string: "
							+ storeId);
			e.printStackTrace();
			System.err.println("Returning null value...");
			return null;

		}
	}

	@Override
	public List<Store> searchStoresByStaff(Staff staff) {
		return this.storeDao.searchStoresByStaff(staff);
	}

	@Override
	public List<Store> searchStoresByAddress(Address address) {
		return this.storeDao.searchStoresByAddress(address);
	}

	@Override
	public Store getStoreByInventory(Inventory inventory) {
		return this.storeDao.getStoreByInventory(inventory);
	}

	@Override
	public Store getStoreByCustomer(Customer customer) {
		return this.storeDao.getStoreByCustomer(customer);
	}

	@Override
	public Store getStoreByStaff(Staff staff) {
		return this.storeDao.getStoreByStaff(staff);
	}

	@Override
	public List<Store> getAllStores() {
		return this.storeDao.getAllStores();
	}

}
